package com.briup.day09;

/**
 * @author 谭梦寻
 * @version 1.1
 */
//命名规则： I 开头的都是接口
/*
    接口和抽象类是两种不同的类型，没有关系
    定义：abstract interface
    使用：extends implements
    内部：成员变量+(普通 抽象 静态)方法+构造器
         常量+(默认 抽象 静态)方法
    使用：抽象

    抽象类：如果一个类中存在抽象方法，那么该类就必须声明为抽象类
           将共性的行为抽象到父类之后就发现，该方法的实现逻辑再付类中无法给出具体的内容
           就可以将该方法定义为抽象方法
           抽象类是用来继承的 继承抽象类就必须重写该抽象类的抽象方法
    抽象类和抽象方法的关系：
        使用abstract修饰的类就是抽象类
        抽象类可以包含，也可以不包含抽象方法
        包含抽象方法的类，一定要声明为抽象类
    抽象类和普通类区别：
        抽象类必须使用abstract修饰符
        抽象类相对普通类，多了包含抽象方法的能力
        抽象类相对普通类，失去了实例化创建对象的能力
    抽象类和普通类相同点：
        符合继承关系特点，能够使用多态机制
        子类可以重写从抽象类继承的方法
        实例化子类对象需要借助父类构造器实现父类部分的初始化

 */
public abstract class AbstractAction implements Action{
//    抽象类如果实现接口 不需要实现接口的抽象方法
//    接口也能继承接口
    public abstract int max();
}
class NoAbstractAction extends AbstractAction {
//  需要实现所有继承和实现的抽象方法（包含接口继承的需要实现的所有方法）
    @Override
    public int max() {
        return 0;
    }

    @Override
    public void method() {

    }

    @Override
    public String getName() {
        return null;
    }
}
